home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / platform_scripts.lua < prev    next >
Encoding:
Text File  |  2005-12-25  |  10.3 KB  |  250 lines

  1.  
  2. function units_platform_setup()
  3.     local unit = uniGetExecutor()
  4.     units_setup(3,false,ENET_EFFECT_PS_SETUPSMOKE_SMALL,ENET_EFFECT_GEOMETRY_PLATFORMSHADOW,true)
  5.     unit:getBone(ENBT_FAN,0):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  6.     unit:getBone(ENBT_FAN,1):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  7.     unit:getBone(ENBT_FAN,2):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  8.     unit:getBone(ENBT_FAN,3):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  9.  
  10.     unit:getBone(ENBT_FAN,0):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  11.     unit:getBone(ENBT_FAN,1):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  12.     unit:getBone(ENBT_FAN,2):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  13.     unit:getBone(ENBT_FAN,3):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  14.  
  15.     unit:getBone(ENBT_FAN,0):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  16.     unit:getBone(ENBT_FAN,1):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  17.     unit:getBone(ENBT_FAN,2):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  18.     unit:getBone(ENBT_FAN,3):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  19. end
  20.  
  21. function units_platform_resetup()
  22.     local unit = uniGetExecutor()
  23.     units_setup(3,false,nil,ENET_EFFECT_GEOMETRY_PLATFORMSHADOW,true)
  24.     unit:getBone(ENBT_FAN,0):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  25.     unit:getBone(ENBT_FAN,1):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  26.     unit:getBone(ENBT_FAN,2):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  27.     unit:getBone(ENBT_FAN,3):addRotationEffect(ENET_EFFECT_ROTATE_RADAR,MATH_PI)
  28.  
  29.     unit:getBone(ENBT_FAN,0):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  30.     unit:getBone(ENBT_FAN,1):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  31.     unit:getBone(ENBT_FAN,2):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  32.     unit:getBone(ENBT_FAN,3):addSimpleEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT)
  33.  
  34.     unit:getBone(ENBT_FAN,0):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  35.     unit:getBone(ENBT_FAN,1):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  36.     unit:getBone(ENBT_FAN,2):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  37.     unit:getBone(ENBT_FAN,3):addSimpleEffect(ENET_EFFECT_PS_ENVIRONMENT_PLATFORMSMOKE)
  38. end
  39.  
  40. function units_platform_select()
  41.     units_select(32)
  42. end
  43.  
  44. function units_platform_unselect()
  45.     units_unselect()
  46. end
  47.  
  48. function units_platform_selectenemy()
  49.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  50. end
  51.  
  52. function units_platform_damaged()
  53.     uniGetExecutor():applyDamage(uniGetLife())
  54. end
  55.  
  56. function units_platform_highlight()
  57.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  58. end
  59.  
  60. function units_platform_explode()
  61.     units_explode_big1()
  62. end
  63.  
  64. function units_platform_fire()
  65. end
  66.  
  67. function units_platform_move()
  68.     local unit = uniGetExecutor()
  69.     local sound = unit:play3DSound("something moves.wav",1)
  70.     waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 0.6))
  71.     waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,60))
  72.     sound:destroy()
  73. end
  74.  
  75. function units_platform_load()
  76.     local unit = uniGetExecutor()
  77.     local cargo = uniGetTarget()
  78.     local sound = unit:play3DSound("something moves.wav",1)
  79.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  80.     waitDeath(unit:parabolicTargetting(cargo))
  81.     sound:destroy()
  82.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  83.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  84.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  85.     uniSetPosition(unit:getBone(ENBT_FIRE1):getWorldPosition())
  86.     unit:play3DSound("platform_opens.wav",0):destroy()
  87.     local ground = units_addGround(unit,ENET_PLATFORM_GROUND)
  88.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  89.     cargo:terminateCommand()
  90.     cargo:executeCommand(ENC_INSIDE,true)
  91.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  92.     cargo:setTransformOwner(units_findfreefirespot(unit,1))
  93.     unit:setCurrentAnimationRepeatCount(0)
  94.     cargo:setVisibility(true,true) 
  95.     cargo:terminateCommand()
  96. end
  97.  
  98. function units_platform_unload()
  99.     local unit = uniGetExecutor()
  100.     local cargo = uniGetTarget()
  101.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  102.     local pos = uniGetPosition()
  103.     local sound = unit:play3DSound("something moves.wav",1)
  104.     waitDeath(unit:parabolicTargetting(pos))
  105.     sound:destroy()
  106.     unit:play3DSound("platform_opens2.wav",0):destroy()
  107.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  108.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  109.     unit:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  110.     local ground = units_addGround(unit,ENET_PLATFORM_GROUND)
  111.     cargo:setTransformOwner()
  112.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  113.     cargo:terminateCommand()
  114.     cargo:executeCommand(ENC_INSIDE,true)
  115.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  116.     unit:setCurrentAnimationRepeatCount(0)
  117.     cargo:terminateCommand()
  118. end
  119.  
  120. function units_platform_transfer()
  121.     local unit = uniGetExecutor()
  122.     local cargo = uniGetTarget()
  123.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  124.     local from = cargo:getTransformOwner():getTransformOwner()
  125.     local fromType = from:getEffectType()
  126.     units_waitCommandByUID(from,unit:getCurrentCommandUID() - 2)    
  127.     if(fromType == ENET_UNIT_PLATFORM) then
  128.         waitDeath(from:parabolicTargetting(unit))
  129.         from:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  130.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  131.         from:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  132.         local ground = units_addGround(from,ENET_PLATFORM_GROUND)
  133.         cargo:setTransformOwner()
  134.         units_platform_load()
  135.         from:setCurrentAnimationRepeatCount(0)
  136.         from:terminateCommand()
  137.     elseif(fromType == ENET_UNIT_LANDTRANSPORT or fromType == ENET_UNIT_SEATRANSPORT) then
  138.         waitDeath(from:parabolicTargetting(unit))
  139.         cargo:setTransformOwner()
  140.         from:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  141.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  142.         from:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  143.         local g_type = ENET_STRANSPORT_GROUND
  144.         if(fromType == ENET_UNIT_LANDTRANSPORT) then g_type = ENET_LTRANSPORT_GROUND end
  145.         local ground = units_addGround(from,g_type)
  146.         cargo:setTransformOwner()
  147.         cargo:setScale(0.4,0.4,0.4)
  148.         cargo:setVisibility(true,false)
  149.         units_platform_load()
  150.         units_unload_growth(cargo)
  151.         from:setCurrentAnimationRepeatCount(0)
  152.         from:terminateCommand()
  153.     else
  154.         consoleWrite("attempt to reload from unknown transport type!!!")
  155.     end
  156. end
  157.  
  158. registerCommand(ENSCRIPTSET_PLATFORM,ENC_MOVE,"units_platform_move")
  159. registerCommand(ENSCRIPTSET_PLATFORM,ENC_FIRE1,"units_platform_fire")
  160. registerCommand(ENSCRIPTSET_PLATFORM,ENC_FIRE2,"units_platform_fire")
  161. registerCommand(ENSCRIPTSET_PLATFORM,ENC_SELECT,"units_platform_select")
  162. registerCommand(ENSCRIPTSET_PLATFORM,ENC_SELECTENEMY,"units_platform_selectenemy")
  163. registerCommand(ENSCRIPTSET_PLATFORM,ENC_UNSELECT,"units_platform_unselect")
  164. registerCommand(ENSCRIPTSET_PLATFORM,ENC_SETUP,"units_platform_setup")
  165. registerCommand(ENSCRIPTSET_PLATFORM,ENC_RESETUP,"units_platform_resetup")
  166. registerCommand(ENSCRIPTSET_PLATFORM,ENC_DAMAGED,"units_platform_damaged")
  167. registerCommand(ENSCRIPTSET_PLATFORM,ENC_EXPLODE,"units_platform_explode")
  168. registerCommand(ENSCRIPTSET_PLATFORM,ENC_HIGHLIGHT,"units_platform_highlight")
  169. registerCommand(ENSCRIPTSET_PLATFORM,ENC_LOAD,"units_platform_load")
  170. registerCommand(ENSCRIPTSET_PLATFORM,ENC_UNLOAD,"units_platform_unload")
  171. registerCommand(ENSCRIPTSET_PLATFORM,ENC_TRANSFER,"units_platform_transfer")
  172. registerCommand(ENSCRIPTSET_PLATFORM,ENC_INSIDE,"units_inside")
  173.  
  174. -- make description of unit
  175. desc = getEffectDescriptionP(ENET_UNIT_PLATFORM)
  176. desc.ClassID = ENCLASS_MESHINSTANCE
  177. desc.EffectClassType = ENECT_GEOMETRY
  178. desc.FileName = "platform.rmd"
  179. desc.ScriptSet = ENSCRIPTSET_PLATFORM
  180. desc.MoveType = ENMOVE_AMPHIBIAN
  181. desc.RenderType = ENRENDERTYPE_GEOMETRY
  182. desc.Material = ENMAT_RIGIDSKINNEDMESH
  183. desc.MaterialColors = units_materialcolors_human
  184. desc.isPlacesVisible = true
  185.  
  186. --desc.Geometry.isCollisionable = true
  187.  
  188. -- shadow
  189. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_PLATFORMSHADOW)
  190. desc.ClassID = ENCLASS_MESHINSTANCE
  191. desc.EffectClassType = ENECT_GEOMETRY
  192. desc.FileName = "platform_shadow.rmd"
  193. desc.RenderType = ENRENDERTYPE_SHADOW
  194. desc.Material = ENMAT_SHADOW
  195. desc.MaterialColors = units_materialcolors_shadow
  196.  
  197. -- register new unit to logic
  198. unitDesc = logic_getUnitDescP(32)
  199. unitDesc.group = 2
  200. unitDesc.order = 1
  201. --unitDesc.unit_res_id = ENET_UNIT_PLATFORM
  202. unitDesc.unit_res_id = ENET_UNIT_PLATFORM
  203. unitDesc.unit_icon_id = "Platform_h_small_normal.dds"
  204. unitDesc.active_id = "Platform_h_small_active.dds"
  205. unitDesc.pressed_id = "Platform_h_small_pressed.dds"
  206. unitDesc.big_icon_id = "Platform_h_big_normal.dds"
  207. unitDesc.small_icon_id = "Platform_u_stats.dds"
  208. unitDesc.HP = 3
  209. unitDesc.MP = 30
  210. unitDesc.WR = 0
  211. unitDesc.min_WR = 0
  212. unitDesc.WD = 0
  213. unitDesc.WR2 = 0
  214. unitDesc.min_WR2 = 0
  215. unitDesc.WD2 = 0
  216. unitDesc.ability = 7
  217. unitDesc.transport = 1
  218. unitDesc.value = 2
  219. unitDesc.race = 0
  220. unitDesc.fire_pause = 0.6
  221. unitDesc.move_pause = 0.5
  222. unitDesc.unit_info_scale = 0.07
  223. unitDesc.scn_name = "BPLATFORM"
  224.  
  225. ------------------------------------------------------------------------------------------
  226. ------------------------------------------------------------------------------------------
  227. ------------------------------------------------------------------------------------------
  228. ------------------------------------------------------------------------------------------
  229.  
  230. desc = getEffectDescription(ENET_EFFECT_SPRITE_EXPLOSION)
  231. desc.FileName = "platform_vint.dds"
  232. desc.OrientedSprite.xsize = 11
  233. desc.OrientedSprite.ysize = 11
  234. desc.OrientedSprite.SpriteType = 2
  235. desc.MaterialColors.Emissive.r = 1.0;
  236. desc.MaterialColors.Emissive.g = 1.0;
  237. desc.MaterialColors.Emissive.b = 1.0;
  238. desc.MaterialColors.Emissive.a = 1.0;
  239. changeEffect(ENET_EFFECT_BINDEDSPRITE_PLATFORMVINT,desc)
  240.  
  241.  
  242. ------------------------------------------------------------------------------------------
  243. ------------------------------------------------------------------------------------------
  244. ------------------------------------------------------------------------------------------
  245. desc = getEffectDescription(ENET_EFFECT_GEOMETRY_VEGETATION_FURPALM)
  246. desc.FileName = "platform_ground.smd"
  247. desc.effectUsageType = ENEUT_GENERIC
  248. desc.Geometry.isCollisionable = true
  249. changeEffect(ENET_PLATFORM_GROUND,desc)
  250.